package com.iwhalecloud.citybrain.flow.platform.manager.application.service;

import java.util.List;

import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.app.FlowAppSimpleInfoVo;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.app.FlowBusiSimpleInfoVo;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.statistics.CataloguePageable;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.tenant.FlowTenantSimpleInfoVo;

/**
 * @author lilh
 * @date 2020/11/24 下午3:07
 */
public interface FlowCatalogueService {

    /**
     * 获取租户-应用-业务
     *
     * @return 三级目录数据
     */
    List<FlowTenantSimpleInfoVo> listCatalogue();

    /**
     * 获取当前登录人租户列表
     *
     * @return 租户列表
     */
    List<FlowTenantSimpleInfoVo> listCurrentUserTenants();


    /**
     * 获取当前登录人在指定租户下的应用列表
     *
     * @param tenantId 租户id
     * @return 应用列表
     */
    List<FlowAppSimpleInfoVo> listCurrentUserApps(Integer tenantId);

    /**
     * 获取应用下的业务列表
     *
     * @param appId 应用id
     * @return 业务列表
     */
    List<FlowBusiSimpleInfoVo> listBusiCatalogue(Integer appId);


    /**
     * 解析已授权租户信息
     *
     * @param cataloguePageable 参数
     * @return true-无权限，false-有权限
     */
    boolean checkTenantAuthorize(CataloguePageable cataloguePageable);


    /**
     * 校验是否有权限
     *
     * @param tenantId 租户id
     * @return true-有权限，false-无权限
     */
    boolean hasAuthorize(Integer tenantId);


}
